package pl.un4giv3n.mightvsmagic.action.clan;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;

public class GiveMoneyAction extends ClanAction {

	private static final long serialVersionUID = 1L;
	private String goldGiven;

	@Override
	public String execute() {
		EntityManager entityManager = getEntityManager();
		user = getSessionUser(entityManager);
		if (user == null) {
			addActionError("Zaloguj się");
			entityManager.close();
			return LOGIN;
		}
		clan = user.getClan();
		if (clan == null) {
			entityManager.close();
			addActionError("Wybrany klan nie istnieje lub niewystarczające uprawnienia.");
			return ERROR;
		} else {
			try{
				long gold = Long.parseLong(goldGiven);
				if(gold <= 0){
					addActionError("Nieprawidłowa kwota, proszę wpisać dodatnią liczbę całkowitą");
					entityManager.close();
					return INPUT;
				}
				if(gold > user.getGold()){
					addActionError("Nie możesz wpłacić na klan więcej niż posiadasz");
					entityManager.close();
					return INPUT;
				}
				EntityTransaction transaction = entityManager.getTransaction();
				transaction.begin();
				clan.addGold(gold);
				user.removeGold(gold);
				entityManager.merge(clan);
				entityManager.merge(user);
				entityManager.flush();
				transaction.commit();
				entityManager.close();
				return SUCCESS;
			}catch(NumberFormatException e){
				addActionError("Nieprawidłowa kwota, proszę wpisać dodatnią liczbę całkowitą");
				entityManager.close();
				return INPUT;
			}
		}
	}

	public String getGoldGiven() {
		return goldGiven;
	}

	public void setGoldGiven(String goldGiven) {
		this.goldGiven = goldGiven;
	}

}
